<body>
<strong><font face="Verdana,Arial,Helvetica,Sans-Serif">prefuse</font></strong> is a user interface
toolkit for constructing highly-interactive visualizations of graph-structured
(i.e. node-link) data. <font face="Verdana,Arial,Helvetica,Sans-Serif">prefuse</font>
applications are built by stringing together composable modules (called
<code>{@link prefuse.action.Action Actions}</code>) into
<code>{@link prefuse.activity.ActionList ActionLists}</code>
that perform various tasks such as graph processing and animation.

<br/><br/>

Other features of the toolkit include:
<ul>
  <li>Libraries of composable actions, including layout algorithms (see
      the <code>{@link prefuse.action action}</code> and
      <code>{@link prefusex.layout layout}</code> packages).
  </li>
  <li>Filtering and caching schemes to support large data sets through a
  	  centralized <code>{@link prefuse.ItemRegistry ItemRegistry}
  	  </code>.
  </li>	  
  <li>A physics simulation engine supporting physically-based layout and interaction
      (see the <code>{@link prefusex.force force}</code> package).
  </li>    
  <li>Flexible activity scheduling and animation support (see the
      <code>{@link prefuse.activity activity}</code> package);      
   </li>   
  <li>User interface event handling (see the
      <code>{@link prefuse.event event}</code> and
      <code>{@link prefusex.controls controls}</code> packages).
  </li>
  <li>View transformations, as well as panning and zooming (see the
  	  <code>{@link prefuse.Display Display}</code> class and
  	  the <code>{@link prefusex.distortion distortion}</code>
  	  package).
  </li>
</ul>

<br/>

The general pattern of building a prefuse visualization component is to first
determine the <code>{@link prefuse.graph.Graph Graph}</code>
data structure to visualize, and construct an 
<code>{@link prefuse.ItemRegistry ItemRegistry}</code>
to create and store visual representations of the graph data along with one or more
<code>{@link prefuse.Display Display}</code> instances to draw
these visual representations to the screen. One then assigns a 
<code>{@link prefuse.render.RendererFactory RendererFactory}</code>
to the <code>{@link prefuse.ItemRegistry ItemRegistry}</code>,
which determines which
<code>{@link prefuse.render.Renderer Renderer}</code>
instances are used to draw individual items. Then any number of 
<code>{@link prefuse.activity.ActionList ActionLists}</code>
can be created and scheduled to perform graph operations such as layout, color
assignment, and animation. Finally, interactive behaviors can be specified by
adding custom 
<code>{@link prefuse.event.ControlListener ControlListeners}</code>
or pre-built <code>{@link prefusex.controls Controls}</code>
to the <code>{@link prefuse.Display Display}</code> instances.

For working examples of this process, take a look at the provided
{@link prefuse.demos demonstration applications}.
</body>